iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
DevOps

我獨自升級:從水管工走向 DataOps系列 第 26

【Day 26】Data Pipeline 測試 - Data Quality feat. Great Expectations

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20241009/20135427WsYdqTsdSS.png

前世今生

Great Expectations 於 2017 年由 Abe Gong 和 James Campbell 開發的 side project。他們的目標是創造一個工具,幫助數據從業者更好地測試和記錄數據質量。當時 Abe 在領導 Superconductive Health 的數據諮詢業務,James 則是美國政府的數據科學家,他們共同推出了 Great Expectations 作為開源項目。2018 年,平台在 Strata Data & AI 大會上推出後,迅速獲得數據工程師、科學家和分析師的支持,因其靈活性和可擴展性而受到歡迎。2019 年,兩人全力專注於 Great Expectations 的發展,並獲得風險投資支持,建立了快速增長的開源社群。2024 年,Great Expectations 推出了 GX Cloud 的公測版本,提供端到端的數據質量解決方案,並朝著產品導向的商業化道路邁進。

所以目前主要產品就很像 dbt,有可以整合進 python 當中的 core 版本和雲端的 cloud 版本~

主要特色與功能

Great Expectations 是一個資料驗證的開源工具,2017 年由 Abe Gong 和 James Campbell 發布,核心理念是將數據測試和驗證變得像軟件測試一樣普遍和有效。Great Expectations 的設計哲學強調:

  • 可讀性: 期望應該易於理解和溝通。
  • 可擴展性: 用戶應該能夠輕鬆創建自定義期望。
  • 可集成性: 工具應該能夠無縫集成到現有的數據管道中。
  • 自動化: 驗證過程能夠自動執行。

主要功能

1. 期望(Expectations)

這是 Great Expectations 的核心概念,期望是對數據應該滿足的條件的聲明。例如所有客戶ID應該是唯一的或年齡列不應包含負值

2. 數據驗證 (Validations)

Great Expectations 可以根據定義的期望自動驗證數據,並生成詳細的驗證結果

3. 自動文件生成

工具可以自動生成數據文檔,包括數據概況、期望列表和驗證結果。

4.資料分析和探索

Great Expectations 提供了多種工具來幫助用戶理解和探索他們的數據。

5.整合能力

它可以輕鬆整合到各種數據管道和工作流程中,支持多種數據源和存儲系統。

當然可以整合進 airflow 和 dbt 專案囉~/images/emoticon/emoticon12.gif

使用 GX Core 建立檢查

安裝模組

pip install great_expectations

程式碼範例

import great_expectations as ge

# 載入數據
df = ge.read_csv("your_data.csv")

# 創建期望
df.expect_column_values_to_be_between("age", min_value=0, max_value=120)
df.expect_column_values_to_be_unique("customer_id")

# 驗證數據
results = df.validate()

# 查看結果
print(results)

常見的Expectations類型包括:

  1. 欄位值範圍檢查
  2. 唯一值檢查
  3. 非空值檢查
  4. 數據類型檢查
  5. 正則表達式檢查
  6. 自定義檢查
  7. 跨欄位檢查

其他預設的 Expectations

可以到官方網站上查看許多預先建立好的 Expectations,其中都會有 python 的使用範例

例如我們選擇其中的ExpectColumnMeanToBeBetween,從名稱大概就可以知道是欄位平均值需要介於XX 和 XX 之間
https://ithelp.ithome.com.tw/upload/images/20241010/20135427GEloCP9O6X.png

https://ithelp.ithome.com.tw/upload/images/20241010/20135427D4Acois6if.png

使用 GX Cloud 建立檢查

免費的 Developer Plan 就有提供了五個資料源,三個使用者,而且驗證結果會保留 30 天,其他詳細的方案內容可以來這裡看~

根據使用的 db 去選擇

https://ithelp.ithome.com.tw/upload/images/20241010/20135427ytQKy5uT7o.png

postgres 連接

我這邊是連接 AWS RDS 當中的 postgres DB,連接的 url 範例如下

postgresql+psycopg2://<username>:<password>@<host>:<port>/<database>

連接完之後就可以在首頁看到了

https://ithelp.ithome.com.tw/upload/images/20241010/20135427vwLCSchhZE.png

建立 expectation

GX Cloud 中也可以找到同一個預設定好的檢查 Expect column mean to be between,在這裡範例就是設定客戶 LTV 的平均值會介於 0 ~ 100。
https://ithelp.ithome.com.tw/upload/images/20241010/20135427kER67UJdIZ.png

執行 expectation

建立完之後就可以在 Expectations 頁面看到並手動執行(當然可以設定定期執行)

https://ithelp.ithome.com.tw/upload/images/20241010/201354278bcfDmtr5v.png

Validations 頁面就可以看到執行的紀錄,目前資料的平均值可以看到是 26.9

https://ithelp.ithome.com.tw/upload/images/20241010/20135427PPHLNP7zZq.png

expectation 執行錯誤

如果突然有極端值,就可能導致平均值超過範圍,有設定檢查就能提擇發現,避免後續資料使用在報表或模型導致錯誤或難以挽回的結果

https://ithelp.ithome.com.tw/upload/images/20241010/201354277ICFCSJjAR.png

也可以透過 email 設定警報,slack 也可以~

https://ithelp.ithome.com.tw/upload/images/20241010/20135427vcT0bttrro.png

後記

感覺只講了非常一點點,還有很多可以聊,但只剩下四天了,計劃趕不上變化/images/emoticon/emoticon02.gif


上一篇
【Day 25】Data Pipeline 測試 - Data Quality feat. dbt test
下一篇
【Day 27】Data Pipeline 測試 - Code Quality feat. pytest
系列文
我獨自升級:從水管工走向 DataOps30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言